package graph.geometricshapes
{
	import common.interfaces.INameable;
	
	public class GeometricShape implements IGeometricShape, IPolygon, INameable
	{
		public static const NAME:String = "GeometricShape"
		
		public static const DefaultWidth:Number = 100;
		protected var _width:Number = DefaultWidth;
		public virtual function get width():Number
		{
			return this._width;
		}
		public virtual function set width(value:Number):void
		{
			this._width = value;
		}
		
		public static const DefaultHeight:Number = 50;
		protected var _height:Number = DefaultHeight;
		public virtual function get height():Number
		{
			return this._height;
		}
		public virtual function set height(value:Number):void
		{
			this._height = value;
		}
		
		public function GeometricShape(width:Number = DefaultWidth, height:Number = DefaultHeight)
		{
			this.width = width;
			this.height = height;
		}
		
		public virtual function get getName():String 
		{
			return NAME;
		}
		
		public virtual function getArea():Number
		{
			return 0;
		}
		
		public virtual function getPerimeter():Number
		{
			return 0;
		}
	}
}